home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / guardtower_scripts.lua < prev    next >
Encoding:
Text File  |  2007-01-25  |  21.4 KB  |  718 lines

  1.  
  2.  
  3. function units_guardtower_setup()
  4.     units_setup(9,false,ENET_EFFECT_PS_SETUPSMOKE_SMALL,ENET_EFFECT_GEOMETRY_GUARDTOWERSHADOW)
  5. end
  6.  
  7. function units_guardtower_resetup()
  8.     units_setup(9,false,nil,ENET_EFFECT_GEOMETRY_GUARDTOWERSHADOW)
  9. end
  10.  
  11. function units_guardtower_select()
  12.     units_select(22,4)
  13. end
  14.  
  15. function units_guardtower_unselect()
  16.     units_unselect()
  17. end
  18.  
  19. function units_guardtower_selectenemy()
  20.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  21. end
  22.  
  23. function units_guardtower_damaged()
  24.     uniGetExecutor():applyDamage(uniGetLife())
  25. end
  26.  
  27. function units_guardtower_highlight()
  28.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  29. end
  30.  
  31. function units_guardtower_explode()
  32.     units_explode_big1()
  33. end
  34.  
  35. function units_guardtower_move()
  36. end
  37.  
  38. function units_guardtower_fire()
  39.     local unit = uniGetExecutor()
  40.     local gt = unit:getBone(ENBT_GUNTOWER,0)
  41.     local hipower = gt:addSimpleEffect(ENET_EFFECT_PS_GUARDTOWER_HIPOWER)
  42.     hipower:setLocalPosition(0,10,-8)
  43.     local sound = unit:play3DSound("guardtower_guntower_rotate.wav",1)
  44.     waitDeath(gt:addRotationEffect(ENET_EFFECT_ROTATE_GUNTOWERTOTARGET,MATH_PI,uniGetTarget()))
  45.     sound:destroy()
  46.     local fireSpot = gt:getBone(ENBT_FIRE1, 0)
  47.     fireSpot:addSimpleEffect(ENET_EFFECT_PS_GUARDTOWER_SPAWN):delayedDestroy(2.0)
  48.     fireSpot:addSimpleEffect(ENET_EFFECT_LIGHT_GUARDTOWER_SPAWN):delayedDestroy(4.0)
  49.     unit:play3DSound("guard tower generate field2.wav",0)
  50.     unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  51.     unit:addAnimationToQueue(ENAT_FIRE1,MATH_INFINITY)
  52.     pause(1.9)
  53.     unit:play3DSound("guard tower beam.wav",0)
  54.     fireSpot:addBulletEffect(ENET_EFFECT_BULLET_3CHANNELSLIGHTNING):executeCommand(ENC_FIRE1)
  55.     hipower:suspendedDestroy(0.2)
  56.     pause(1.0)
  57.     unit:setCurrentAnimationRepeatCount(1)
  58.     sound = unit:play3DSound("guardtower_guntower_rotate.wav",1)
  59.     unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  60.     pause(0.5)
  61.     waitDeath(gt:addRotationEffect(ENET_EFFECT_ROTATE_GUNTOWERDEFAULT,MATH_PI))
  62.     sound:destroy()
  63.     unit:addFireArrow()
  64. end
  65.  
  66. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_MOVE,"units_guardtower_move")
  67. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_FIRE1,"units_guardtower_fire")
  68. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_FIRE2,"units_guardtower_fire")
  69. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_SELECT,"units_guardtower_select")
  70. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_SELECTENEMY,"units_guardtower_selectenemy")
  71. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_UNSELECT,"units_guardtower_unselect")
  72. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_SETUP,"units_guardtower_setup")
  73. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_RESETUP,"units_guardtower_resetup")
  74. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_DAMAGED,"units_guardtower_damaged")
  75. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_EXPLODE,"units_guardtower_explode")
  76. registerCommand(ENSCRIPTSET_GUARDTOWER,ENC_HIGHLIGHT,"units_guardtower_highlight")
  77.  
  78. -- make description of unit
  79. desc = getEffectDescriptionP(ENET_UNIT_GUARDTOWER)
  80. desc.ClassID = ENCLASS_MESHINSTANCE
  81. desc.EffectClassType = ENECT_GEOMETRY
  82. desc.FileName = "guardtower.rmd"
  83. desc.ScriptSet = ENSCRIPTSET_GUARDTOWER
  84. desc.MoveType = ENMOVE_SWIM
  85. desc.RenderType = ENRENDERTYPE_GEOMETRY
  86. desc.Material = ENMAT_RIGIDSKINNEDMESH
  87. desc.MaterialColors = units_materialcolors_human
  88.  
  89. -- shadow
  90. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_GUARDTOWERSHADOW)
  91. desc.ClassID = ENCLASS_MESHINSTANCE
  92. desc.EffectClassType = ENECT_GEOMETRY
  93. desc.FileName = "guardtower_shadow.rmd"
  94. desc.RenderType = ENRENDERTYPE_SHADOW
  95. desc.Material = ENMAT_SHADOW
  96. desc.MaterialColors = units_materialcolors_shadow
  97.  
  98. -- register new unit to logic
  99. unitDesc = logic_getUnitDescP(5)
  100. unitDesc.group = 2
  101. unitDesc.order = 6
  102. unitDesc.unit_res_id = ENET_UNIT_GUARDTOWER
  103. unitDesc.unit_icon_id = "Guardtower_h_small_normal.dds"
  104. unitDesc.active_id = "Guardtower_h_small_active.dds"
  105. unitDesc.pressed_id = "Guardtower_h_small_pressed.dds"
  106. unitDesc.big_icon_id = "Guardtower_h_big_normal.dds"
  107. unitDesc.small_icon_id = "Guardtower_u_stats.dds"
  108. unitDesc.HP = 9
  109. unitDesc.MP = 0
  110. unitDesc.WR = 4
  111. unitDesc.min_WR = 1
  112. unitDesc.WD = 2
  113. unitDesc.WR2 = 0
  114. unitDesc.min_WR2 = 0
  115. unitDesc.WD2 = 0
  116. unitDesc.ability = 1
  117. unitDesc.transport = 0
  118. unitDesc.value = 4
  119. unitDesc.race = 0
  120. unitDesc.fire_pause = 0.75
  121. unitDesc.move_pause = 0.7
  122. unitDesc.unit_info_scale = 0.03
  123. unitDesc.scn_name = "GTOWER"
  124.  
  125. ----------- bullet spawning particle system effect for GuardTower
  126.  
  127. function effects_PS_GUARDTOWER_SPAWN_onCreate()
  128.     local effect = uniGetExecutor()
  129.     effect:addRotationEffect(ENET_EFFECT_ROTATE_SPAWNINGPLAZMABALL,2.0)
  130. end
  131.  
  132. desc = getEffectDescriptionP(ENET_EFFECT_PS_GUARDTOWER_SPAWN)
  133.  
  134. desc.onCreate = "effects_PS_GUARDTOWER_SPAWN_onCreate"
  135.  
  136. desc.ClassID = ENCLASS_SIMPLEPARTICLESYSTEM
  137. desc.EffectClassType = ENECT_PARTICLESYSTEM
  138.  
  139. desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  140. desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  141. local vzbzd1 = D3DXVECTOR3:new(0,0,0)
  142. desc.LocalPosition = vzbzd1
  143. vzbzd1:delete()
  144. desc.isAnimateTexture = false
  145. desc.RenderType = ENRENDERTYPE_GEOMETRY
  146.  
  147. Emitter = desc.PS.PSDescription
  148. Emitter.ParticleTypesNumber = 1
  149. local vzbzd2 = D3DXVECTOR3:new(0,0,0)
  150. Emitter.EmitterPosition = vzbzd2
  151. vzbzd2:delete()
  152. local vzbzd3 = D3DXVECTOR3:new(0,0,0)
  153. Emitter.EmitterDirection = vzbzd3
  154. vzbzd3:delete()
  155. Emitter.EmitterLifeTime = 10000
  156.  
  157. PT = Emitter.ParticleTypesParams[1]
  158. PT.IsEmitterLocked = true
  159. PT.DrawOrder = 1
  160. PT.Material = ENMAT_PARTICLE_LIGHT
  161.  
  162. PT.TextureName = "particle.dds";
  163.  
  164. PT.ParticlesPerSecond = 0.0001;
  165. PT.InitialNumberOfParticles = 150.0;
  166. PT.BaseLifeTime = 2.0;
  167. PT.BaseLifeTimeVariance = 0.0;
  168. PT.BaseSpeed = 0.0;
  169. PT.BaseSpeedVariance = 0.0;
  170. PT.BaseAngle = 0.0;
  171. PT.BaseAngleVariance = 0.0;
  172. PT.BaseAngleSpeed = 0.0;
  173. PT.BaseAngleSpeedVariance = 0.0
  174. PT.BaseAngleSpeedDirection = 0;
  175. local vzbzd4 = D3DXVECTOR3:new(0.0,0.0,1.0)
  176. PT.BaseDirection = vzbzd4
  177. vzbzd4:delete()
  178. PT.DirectionRelativeness = ENREL_FROMPARENTCENTER
  179. local vzbzd5 = D3DXVECTOR3:new(0.0,0.0,0.0)
  180. PT.BaseDirectionVariance = vzbzd5
  181. vzbzd5:delete()
  182. local vzbzd6 = D3DXVECTOR3:new(0,0,0)
  183. PT.BasePosition = vzbzd6
  184. vzbzd6:delete()
  185. local vzbzd7 = D3DXVECTOR3:new(60,60,60)
  186. PT.BasePositionVariance = vzbzd7
  187. vzbzd7:delete()
  188. PT.EmittingSurfaceType = ENEST_FACESPHERE
  189. PT.BaseSize = 4.0;
  190. PT.BaseSizeVariance = 0.0;
  191.  
  192.  
  193. -- color over time
  194. PT.ColorOverTimeR[1].TimePercent = 0.0
  195. PT.ColorOverTimeR[1].Value = 0.0
  196. PT.ColorOverTimeG[1].TimePercent = 0.0
  197. PT.ColorOverTimeG[1].Value = 0.0
  198. PT.ColorOverTimeB[1].TimePercent = 0.0
  199. PT.ColorOverTimeB[1].Value = 1.0
  200.  
  201. PT.ColorOverTimeR[2].TimePercent = 0.7
  202. PT.ColorOverTimeR[2].Value = 0.2
  203. PT.ColorOverTimeG[2].TimePercent = 0.7
  204. PT.ColorOverTimeG[2].Value = 0.2
  205. PT.ColorOverTimeB[2].TimePercent = 0.7
  206. PT.ColorOverTimeB[2].Value = 1.0
  207.  
  208. PT.ColorOverTimeR[3].TimePercent = 1.0
  209. PT.ColorOverTimeR[3].Value = 0.2
  210. PT.ColorOverTimeG[3].TimePercent = 1.0
  211. PT.ColorOverTimeG[3].Value = 0.2
  212. PT.ColorOverTimeB[3].TimePercent = 1.0
  213. PT.ColorOverTimeB[3].Value = 1.0
  214.  
  215. -- transparency over time
  216. PT.TransparencyOverTime[1].TimePercent = 0.0;
  217. PT.TransparencyOverTime[1].Value = 0.0;
  218.  
  219. PT.TransparencyOverTime[2].TimePercent = 1.0;
  220. PT.TransparencyOverTime[2].Value = 0.5;
  221.  
  222. -- size over time
  223. PT.SizeOverTime[1].TimePercent = 0.0;
  224. PT.SizeOverTime[1].Value = 1.0;
  225.  
  226. PT.SizeOverTime[2].TimePercent = 1.0;
  227. PT.SizeOverTime[2].Value = 1.0;
  228.  
  229. -- Speed over time
  230. PT.SpeedOverTime[1].TimePercent = 0.0;
  231. PT.SpeedOverTime[1].Value = 2.6;
  232.  
  233. PT.SpeedOverTime[2].TimePercent = 0.5;
  234. PT.SpeedOverTime[2].Value = 0.4;
  235.  
  236. PT.SpeedOverTime[3].TimePercent = 1.0;
  237. PT.SpeedOverTime[3].Value = 0.0;
  238.  
  239. -- Tangent Speed over time
  240. PT.TangentSpeedOverTime[1].TimePercent = 0.0;
  241. PT.TangentSpeedOverTime[1].Value = 0.0;
  242.  
  243. PT.TangentSpeedOverTime[2].TimePercent = 1.0;
  244. PT.TangentSpeedOverTime[2].Value = 0.0;
  245.  
  246. -- GravityAcceleration over time
  247. PT.GravityAccelerationOverTime[1].TimePercent = 0.0;
  248. PT.GravityAccelerationOverTime[1].Value = 0.0;
  249.  
  250. PT.GravityAccelerationOverTime[2].TimePercent = 1.0;
  251. PT.GravityAccelerationOverTime[2].Value = 0.0;
  252.  
  253. -- AngleSpeed over time
  254. PT.AngleSpeedOverTime[1].TimePercent = 0.0;
  255. PT.AngleSpeedOverTime[1].Value = 0.0;
  256.  
  257. PT.AngleSpeedOverTime[2].TimePercent = 1.0;
  258. PT.AngleSpeedOverTime[2].Value = 0.0;
  259.  
  260.  
  261. -------------------------------------------- lightning particle system
  262. desc = getEffectDescriptionP(ENET_EFFECT_PS_3WAYSLIGHTNING_BLUECHANNEL)
  263. Emitter = desc.PS.PSDescription
  264. PT = Emitter.ParticleTypesParams[1]
  265.  
  266.  
  267. PT.IsEmitterLocked = false
  268. PT.DrawOrder = 1
  269. PT.Material = ENMAT_PARTICLE_LIGHT
  270.  
  271. PT.TextureName = "guardtower_lightning.dds";
  272.  
  273. PT.ParticlesPerSecond = 3000;
  274. PT.InitialNumberOfParticles = 0.0;
  275. PT.BaseLifeTime = 0.6;
  276. PT.BaseLifeTimeVariance = 0.0;
  277. PT.BaseSpeed = 2.0;
  278. PT.BaseSpeedVariance = 0.5;
  279. PT.BaseAngle = 0.0;
  280. PT.BaseAngleVariance = 0.0;
  281. PT.BaseAngleSpeed = 0.0;
  282. PT.BaseAngleSpeedVariance = 0.0
  283. PT.BaseAngleSpeedDirection = 0;
  284. local vzbzd8 = D3DXVECTOR3:new(0.0,0.0,1.0)
  285. PT.BaseDirection = vzbzd8
  286. vzbzd8:delete()
  287. --PT.DirectionRelativeness = ENREL_FROMPARENTCENTER
  288. local vzbzd9 = D3DXVECTOR3:new(0.0,0.0,0.0)
  289. PT.BaseDirectionVariance = vzbzd9
  290. vzbzd9:delete()
  291. local vzbzd10 = D3DXVECTOR3:new(0,0,0)
  292. PT.BasePosition = vzbzd10
  293. vzbzd10:delete()
  294. local vzbzd11 = D3DXVECTOR3:new(0,0,0)
  295. PT.BasePositionVariance = vzbzd11
  296. vzbzd11:delete()
  297. PT.EmittingSurfaceType = ENEST_FACESPHERE
  298. PT.BaseSize = 24.0;
  299. PT.BaseSizeVariance = 0.3;
  300.  
  301.  
  302. -- color over time
  303. PT.ColorOverTimeR[1].TimePercent = 0.0
  304. PT.ColorOverTimeR[1].Value = 0.3
  305. PT.ColorOverTimeG[1].TimePercent = 0.0
  306. PT.ColorOverTimeG[1].Value = 0.3
  307. PT.ColorOverTimeB[1].TimePercent = 0.0
  308. PT.ColorOverTimeB[1].Value = 1.0
  309.  
  310. PT.ColorOverTimeR[2].TimePercent = 1.0
  311. PT.ColorOverTimeR[2].Value = 0.3
  312. PT.ColorOverTimeG[2].TimePercent = 1.0
  313. PT.ColorOverTimeG[2].Value = 0.3
  314. PT.ColorOverTimeB[2].TimePercent = 1.0
  315. PT.ColorOverTimeB[2].Value = 1.0
  316.  
  317. -- transparency over time
  318. PT.TransparencyOverTime[1].TimePercent = 0.0;
  319. PT.TransparencyOverTime[1].Value = 1.0;
  320.  
  321. PT.TransparencyOverTime[2].TimePercent = 1.0;
  322. PT.TransparencyOverTime[2].Value = 1.0;
  323.  
  324. -- size over time
  325. PT.SizeOverTime[1].TimePercent = 0.0;
  326. PT.SizeOverTime[1].Value = 1.0;
  327.  
  328. PT.SizeOverTime[2].TimePercent = 0.1;
  329. PT.SizeOverTime[2].Value = 1.0;
  330.  
  331. PT.SizeOverTime[3].TimePercent = 0.3;
  332. PT.SizeOverTime[3].Value = 2.0;
  333.  
  334. PT.SizeOverTime[4].TimePercent = 1.0;
  335. PT.SizeOverTime[4].Value = 1.0;
  336.  
  337. -- Speed over time
  338. PT.SpeedOverTime[1].TimePercent = 0.0;
  339. PT.SpeedOverTime[1].Value = 1.0;
  340.  
  341. PT.SpeedOverTime[2].TimePercent = 1.0;
  342. PT.SpeedOverTime[2].Value = 1.0;
  343.  
  344. -- Tangent Speed over time
  345. PT.TangentSpeedOverTime[1].TimePercent = 0.0;
  346. PT.TangentSpeedOverTime[1].Value = 0.0;
  347.  
  348. PT.TangentSpeedOverTime[2].TimePercent = 1.0;
  349. PT.TangentSpeedOverTime[2].Value = 0.0;
  350.  
  351. -- GravityAcceleration over time
  352. PT.GravityAccelerationOverTime[1].TimePercent = 0.0;
  353. PT.GravityAccelerationOverTime[1].Value = 0.0;
  354.  
  355. PT.GravityAccelerationOverTime[2].TimePercent = 1.0;
  356. PT.GravityAccelerationOverTime[2].Value = 0.0;
  357.  
  358. -- AngleSpeed over time
  359. PT.AngleSpeedOverTime[1].TimePercent = 0.0;
  360. PT.AngleSpeedOverTime[1].Value = 0.0;
  361.  
  362. PT.AngleSpeedOverTime[2].TimePercent = 1.0;
  363. PT.AngleSpeedOverTime[2].Value = 0.0;
  364.  
  365.  
  366. ------ light source
  367. --
  368. -- lightsource creation test
  369. --
  370. --desc = getEffectDescriptionP(ENET_NOTHING)
  371. --desc.ClassID = ENCLASS_LIGHTSOURCE
  372. --desc.EffectClassType = ENECT_LIGHTSOURCE
  373.  
  374. --desc.LifeLimit = 4.0
  375.  
  376. --desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  377. --desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  378. local vzbzd12 = D3DXVECTOR3:new(0,0,0)
  379. --desc.LocalPosition = vzbzd12
  380. vzbzd12:delete()
  381. --desc.ActivityType = ENACT_SEMIACTIVE
  382.  
  383. -- add interpolators
  384. --local interpolator = createInterpolator()
  385. --interpolator:addKey(0.0,200.0)
  386. --interpolator:addKey(0.3,150.0)
  387. --interpolator:addKey(0.6,250.0)
  388. --interpolator:addKey(0.9,200.0)
  389. --interpolator:finalize(false)
  390. -- add interpolator on light range
  391. --desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_LIGHT_RANGE))
  392.  
  393. --local interpolator = createInterpolator()
  394. --interpolator:addKey(0.0,0.3)
  395. --interpolator:addKey(0.2,0.1)
  396. --interpolator:addKey(0.4,0.3)
  397. --interpolator:addKey(0.6,0.1)
  398. --interpolator:addKey(0.8,0.3)
  399. --interpolator:finalize(false)
  400. -- add interpolator on R G B colors
  401. --desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_R))
  402. --desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_G))
  403.  
  404. --local interpolator = createInterpolator()
  405. --interpolator:addKey(0.0,0.7)
  406. --interpolator:addKey(0.2,0.3)
  407. --interpolator:addKey(0.4,0.7)
  408. --interpolator:addKey(0.6,0.3)
  409. --interpolator:addKey(0.8,0.7)
  410. --interpolator:finalize(false)
  411. -- add interpolator on R G B colors
  412. --desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_B))
  413.  
  414. --
  415. -- end lightsource creation description
  416. --
  417.  
  418.  
  419. ------ light source
  420. --
  421. -- lightsource creation test
  422. --
  423. desc = getEffectDescriptionP(ENET_EFFECT_LIGHT_GUARDTOWER_SPAWN)
  424. desc.ClassID = ENCLASS_LIGHTSOURCE
  425. desc.EffectClassType = ENECT_LIGHTSOURCE
  426.  
  427. desc.LifeLimit = 4.0
  428.  
  429. desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  430. desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  431. local vzbzd13 = D3DXVECTOR3:new(0,0,0)
  432. desc.LocalPosition = vzbzd13
  433. vzbzd13:delete()
  434. desc.ActivityType = ENACT_SEMIACTIVE
  435.  
  436. desc:clearInterpolators()
  437.  
  438. local interpolator = createInterpolator()
  439. interpolator:addKey(0.0,400.0)
  440. interpolator:addKey(0.5,400.0)
  441. interpolator:addKey(3.0,200.0)
  442. interpolator:addKey(4.0,200.0)
  443. interpolator:finalize(false)
  444. -- add interpolator on light range
  445. desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_LIGHT_RANGE))
  446.  
  447. local interpolator = createInterpolator()
  448. interpolator:addKey(0.0,0.0)
  449. interpolator:addKey(1.5,0.1)
  450. interpolator:addKey(3.0,0.1)
  451. interpolator:addKey(4.0,0.1)
  452. interpolator:finalize(false)
  453. -- add interpolator on R G B colors
  454. desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_R))
  455. desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_G))
  456.  
  457. local interpolator = createInterpolator()
  458. interpolator:addKey(0.0,0.0)
  459. interpolator:addKey(1.5,0.3)
  460. interpolator:addKey(3.0,0.5)
  461. interpolator:addKey(4.0,0.5)
  462. interpolator:finalize(false)
  463. -- add interpolator on R G B colors
  464. desc:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_B))
  465.  
  466. --
  467. -- end lightsource creation description
  468. --
  469. desc = getEffectDescriptionP(ENET_EFFECT_PS_GUARDTOWER_HIPOWER)
  470.  
  471. desc.ClassID = ENCLASS_SIMPLEPARTICLESYSTEM
  472. desc.EffectClassType = ENECT_PARTICLESYSTEM
  473.  
  474. desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  475. desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  476. local vzbzd14 = D3DXVECTOR3:new(0,0,0)
  477. desc.LocalPosition = vzbzd14
  478. vzbzd14:delete()
  479. desc.isAnimateTexture = false
  480. desc.RenderType = ENRENDERTYPE_GEOMETRY
  481.  
  482. Emitter = desc.PS.PSDescription
  483. Emitter.ParticleTypesNumber = 2
  484. local vzbzd15 = D3DXVECTOR3:new(0,0,0)
  485. Emitter.EmitterPosition = vzbzd15
  486. vzbzd15:delete()
  487. local vzbzd16 = D3DXVECTOR3:new(0,0,0)
  488. Emitter.EmitterDirection = vzbzd16
  489. vzbzd16:delete()
  490. Emitter.EmitterLifeTime = 10000
  491.  
  492. PT = Emitter.ParticleTypesParams[1]
  493. PT.IsEmitterLocked = true
  494. PT.DrawOrder = 1
  495. PT.Material = ENMAT_PARTICLE_LIGHT
  496.  
  497. PT.TextureName = "small_lightning.dds";
  498.  
  499. PT.ParticlesPerSecond = 60.0;
  500. PT.InitialNumberOfParticles = 0.0;
  501. PT.BaseLifeTime = 0.1;
  502. PT.BaseLifeTimeVariance = 0.0;
  503. PT.BaseSpeed = 0.0;
  504. PT.BaseSpeedVariance = 0.0;
  505. PT.BaseAngle = 3.14;
  506. PT.BaseAngleVariance = 1.0;
  507. PT.BaseAngleSpeed = 3.0;
  508. PT.BaseAngleSpeedVariance = 0.5
  509. PT.BaseAngleSpeedDirection = 1;
  510. local vzbzd17 = D3DXVECTOR3:new(0.0,0.0,-1.0)
  511. PT.BaseDirection = vzbzd17
  512. vzbzd17:delete()
  513. PT.DirectionRelativeness = ENREL_PARENT
  514. local vzbzd18 = D3DXVECTOR3:new(0,0,0)
  515. PT.BasePosition = vzbzd18
  516. vzbzd18:delete()
  517. local vzbzd19 = D3DXVECTOR3:new(8,8,8)
  518. PT.BasePositionVariance = vzbzd19
  519. vzbzd19:delete()
  520. PT.EmittingSurfaceType = ENEST_FACESPHERE
  521. PT.BaseSize = 15.0;
  522. PT.BaseSizeVariance = 0.5;
  523.  
  524. local vzbzd20 = D3DXVECTOR3:new(-1.0,0.0,0.0)
  525. PT.TangentDirection = vzbzd20
  526. vzbzd20:delete()
  527. PT.TangentAngleMin = 0.0;
  528. PT.TangentAngleMax = 6.28;
  529. PT.TangentSpeed = 0.0;
  530. PT.TangentSpeedVariance = 0.0;
  531.  
  532. -- color over time
  533. PT.ColorOverTimeR[1].TimePercent = 0.0
  534. PT.ColorOverTimeR[1].Value = 0.5
  535. PT.ColorOverTimeG[1].TimePercent = 0.0
  536. PT.ColorOverTimeG[1].Value = 0.5
  537. PT.ColorOverTimeB[1].TimePercent = 0.0
  538. PT.ColorOverTimeB[1].Value = 0.5
  539.  
  540. PT.ColorOverTimeR[2].TimePercent = 1.0
  541. PT.ColorOverTimeR[2].Value = 0.5
  542. PT.ColorOverTimeG[2].TimePercent = 1.0
  543. PT.ColorOverTimeG[2].Value = 0.5
  544. PT.ColorOverTimeB[2].TimePercent = 1.0
  545. PT.ColorOverTimeB[2].Value = 0.5
  546.  
  547. -- transparency over time
  548. PT.TransparencyOverTime[1].TimePercent = 0.0;
  549. PT.TransparencyOverTime[1].Value = 0.0;
  550.  
  551. PT.TransparencyOverTime[2].TimePercent = 0.1;
  552. PT.TransparencyOverTime[2].Value = 0.5;
  553.  
  554. PT.TransparencyOverTime[3].TimePercent = 0.95;
  555. PT.TransparencyOverTime[3].Value = 0.8;
  556.  
  557. PT.TransparencyOverTime[4].TimePercent = 1.0;
  558. PT.TransparencyOverTime[4].Value = 0.9;
  559. -- size over time
  560. PT.SizeOverTime[1].TimePercent = 0.0;
  561. PT.SizeOverTime[1].Value = 1.0;
  562.  
  563. PT.SizeOverTime[2].TimePercent = 1.0;
  564. PT.SizeOverTime[2].Value = 1.0;
  565.  
  566. -- Speed over time
  567. PT.SpeedOverTime[1].TimePercent = 0.0;
  568. PT.SpeedOverTime[1].Value = 1.0;
  569.  
  570. PT.SpeedOverTime[2].TimePercent = 1.0;
  571. PT.SpeedOverTime[2].Value = 1.0;
  572.  
  573. -- Tangent Speed over time
  574. PT.TangentSpeedOverTime[1].TimePercent = 0.0;
  575. PT.TangentSpeedOverTime[1].Value = 0.0;
  576.  
  577. PT.TangentSpeedOverTime[2].TimePercent = 1.0;
  578. PT.TangentSpeedOverTime[2].Value = 0.0;
  579.  
  580. -- GravityAcceleration over time
  581. PT.GravityAccelerationOverTime[1].TimePercent = 0.0;
  582. PT.GravityAccelerationOverTime[1].Value = 0.0;
  583.  
  584. PT.GravityAccelerationOverTime[2].TimePercent = 1.0;
  585. PT.GravityAccelerationOverTime[2].Value = 0.0;
  586.  
  587. -- AngleSpeed over time
  588. PT.AngleSpeedOverTime[1].TimePercent = 0.0;
  589. PT.AngleSpeedOverTime[1].Value = 1.0;
  590.  
  591. PT.AngleSpeedOverTime[2].TimePercent = 1.0;
  592. PT.AngleSpeedOverTime[2].Value = 1.0;
  593.  
  594. PT = Emitter.ParticleTypesParams[2]
  595. PT.IsEmitterLocked = false
  596. PT.DrawOrder = 2
  597. PT.Material = ENMAT_PARTICLE_LIGHT
  598.  
  599. PT.TextureName = "star.dds";
  600.  
  601. PT.ParticlesPerSecond = 10.0;
  602. PT.InitialNumberOfParticles = 0.0;
  603. PT.BaseLifeTime = 0.2;
  604. PT.BaseLifeTimeVariance = 0.0;
  605. PT.BaseSpeed = 100.0;
  606. PT.BaseSpeedVariance = 1.0;
  607. PT.BaseAngle = 3.14;
  608. PT.BaseAngleVariance = 1.0;
  609. PT.BaseAngleSpeed = 3.0;
  610. PT.BaseAngleSpeedVariance = 0.5
  611. PT.BaseAngleSpeedDirection = 1;
  612. local vzbzd21 = D3DXVECTOR3:new(0.0,1.0,0.0)
  613. PT.BaseDirection = vzbzd21
  614. vzbzd21:delete()
  615. PT.DirectionRelativeness = ENREL_PARENT
  616. local vzbzd22 = D3DXVECTOR3:new(0,0,0)
  617. PT.BasePosition = vzbzd22
  618. vzbzd22:delete()
  619. local vzbzd23 = D3DXVECTOR3:new(8,8,8)
  620. PT.BasePositionVariance = vzbzd23
  621. vzbzd23:delete()
  622. PT.EmittingSurfaceType = ENEST_FACESPHERE
  623. PT.BaseSize = 5.0;
  624. PT.BaseSizeVariance = 0.5;
  625.  
  626. local vzbzd24 = D3DXVECTOR3:new(1.0,0.0,0.0)
  627. PT.TangentDirection = vzbzd24
  628. vzbzd24:delete()
  629. PT.TangentAngleMin = 0.0;
  630. PT.TangentAngleMax = 6.28;
  631. PT.TangentSpeed = 100.0;
  632. PT.TangentSpeedVariance = 1.0;
  633.  
  634. -- color over time
  635. PT.ColorOverTimeR[1].TimePercent = 0.0
  636. PT.ColorOverTimeR[1].Value = 0.2
  637. PT.ColorOverTimeG[1].TimePercent = 0.0
  638. PT.ColorOverTimeG[1].Value = 0.2
  639. PT.ColorOverTimeB[1].TimePercent = 0.0
  640. PT.ColorOverTimeB[1].Value = 1.0
  641.  
  642. PT.ColorOverTimeR[2].TimePercent = 1.0
  643. PT.ColorOverTimeR[2].Value = 0.2
  644. PT.ColorOverTimeG[2].TimePercent = 1.0
  645. PT.ColorOverTimeG[2].Value = 0.2
  646. PT.ColorOverTimeB[2].TimePercent = 1.0
  647. PT.ColorOverTimeB[2].Value = 1.0
  648.  
  649. -- transparency over time
  650. PT.TransparencyOverTime[1].TimePercent = 0.0;
  651. PT.TransparencyOverTime[1].Value = 1.0;
  652.  
  653. PT.TransparencyOverTime[2].TimePercent = 1.0;
  654. PT.TransparencyOverTime[2].Value = 1.0;
  655.  
  656. -- size over time
  657. PT.SizeOverTime[1].TimePercent = 0.0;
  658. PT.SizeOverTime[1].Value = 1.0;
  659.  
  660. PT.SizeOverTime[2].TimePercent = 1.0;
  661. PT.SizeOverTime[2].Value = 1.0;
  662.  
  663. -- Speed over time
  664. PT.SpeedOverTime[1].TimePercent = 0.0;
  665. PT.SpeedOverTime[1].Value = 1.0;
  666.  
  667. PT.SpeedOverTime[2].TimePercent = 0.5;
  668. PT.SpeedOverTime[2].Value = 0.2;
  669.  
  670. PT.SpeedOverTime[3].TimePercent = 1.0;
  671. PT.SpeedOverTime[3].Value = 0.0;
  672.  
  673. -- Tangent Speed over time
  674. PT.TangentSpeedOverTime[1].TimePercent = 0.0;
  675. PT.TangentSpeedOverTime[1].Value = 1.0;
  676.  
  677. PT.TangentSpeedOverTime[2].TimePercent = 0.5;
  678. PT.TangentSpeedOverTime[2].Value = 0.2;
  679.  
  680. PT.TangentSpeedOverTime[3].TimePercent = 1.0;
  681. PT.TangentSpeedOverTime[3].Value = 0.0;
  682.  
  683. -- GravityAcceleration over time
  684. PT.GravityAccelerationOverTime[1].TimePercent = 0.0;
  685. PT.GravityAccelerationOverTime[1].Value = 0.0;
  686.  
  687. PT.GravityAccelerationOverTime[2].TimePercent = 1.0;
  688. PT.GravityAccelerationOverTime[2].Value = 0.0;
  689.  
  690. -- AngleSpeed over time
  691. PT.AngleSpeedOverTime[1].TimePercent = 0.0;
  692. PT.AngleSpeedOverTime[1].Value = 1.0;
  693.  
  694. PT.AngleSpeedOverTime[2].TimePercent = 1.0;
  695. PT.AngleSpeedOverTime[2].Value = 1.0;
  696.  
  697.  
  698. ------------------------------------------------------------------------------------------------------
  699. ------------------------ effects related to unit------------------------------------------------------
  700. ------------------------------------------------------------------------------------------------------
  701.  
  702. function bullets_lightning_fire()
  703.  
  704.     local bullet = uniGetExecutor()
  705.     bullet:setTransformOwner()
  706.     local fly_ps = bullet:addSimpleEffect(ENET_EFFECT_PS_3WAYSLIGHTNING_BLUECHANNEL)
  707.     waitDeath(bullet:addMoveEffect(ENET_EFFECT_MOVE_FLY4POINTSCURVE,100000,uniGetTarget()))
  708.     local hit_ps = bullet:addSimpleEffect(ENET_EFFECT_PS_BLUELIGHTNINGHIT)
  709.     fly_ps:suspendedDestroy(1.0)
  710.     pause(0.6)
  711.     hit_ps:suspendedDestroy(1.0)
  712.     uniGetTarget():executeCommand(ENC_DAMAGED)
  713.     pause(1.0)
  714.     bullet:destroy()
  715. end
  716.  
  717. registerCommand(ENSCRIPTSET_BULLET_3CHANNELSLIGHTNING,ENC_FIRE1,"bullets_lightning_fire")
  718.